#ifndef BASE_LOG_IMP_H
#define BASE_LOG_IMP_H

#include <stdarg.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

// 日志内容
struct LogContent {
        long thread_id;         // ! 线程ID
        struct {
            uint32_t sec;       // ! 秒
            uint32_t usec;      // ！微妙
        } timestamp;            // ！时间戳

        const char *module_id;  // ! 摸块名
        const char *func_name;  // ! 函数名
        const char *file_name;  // ! 文件名
        int        line;        // ! 行号
        int        level;       // ！日志等级
        uint32_t   text_len;    // ! 内容大小
        const char *text_ptr;   // ! 内容地址
};

//！定义日志输出函数
typedef void (*LogPrintfFuncType)(const LogContent *content, void *ptr);

//! 添加与删除日志输出函数
uint32_t LogAddPrintfFunc(LogPrintfFuncType func, void *ptr);
bool     LogRemovePrintfFunc(uint32_t id);

#ifdef __cplusplus
}
#endif

#endif